package com.hospital.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hospital.entity.Prescription;
import java.util.List;
import java.util.Map;

/**
 * 处方服务接口
 */
public interface PrescriptionService extends IService<Prescription> {
    
    /**
     * 获取处方列表
     */
    List<Prescription> getPrescriptions(String keyword);
    
    /**
     * 获取医生的处方列表
     */
    List<Prescription> getDoctorPrescriptions(String patientName);
    
    /**
     * 获取用户的处方列表
     */
    List<Prescription> getUserPrescriptions(Long userId);
    
    /**
     * 审核处方
     */
    void reviewPrescription(Long prescriptionId, Long reviewerId);
    
    /**
     * 配药
     */
    void dispensePrescription(Long prescriptionId, Long pharmacistId);
    
    /**
     * 获取处方列表（分页）
     */
    Map<String, Object> getPrescriptionsWithPagination(String patientName, String prescriptionNo, 
                                                      Integer status, Integer type, String prescribeDate, 
                                                      Integer page, Integer size);
    
    /**
     * 获取医生的处方列表（分页）
     */
    Map<String, Object> getDoctorPrescriptionsWithPagination(Long doctorId, String patientName, 
                                                            String prescriptionNo, Integer status, 
                                                            Integer type, String prescribeDate, 
                                                            Integer page, Integer size);
    
    /**
     * 填充处方关联信息
     */
    void fillRelatedInfo(Prescription prescription);
    
    /**
     * 批量填充处方关联信息
     */
    void fillRelatedInfo(List<Prescription> prescriptions);

    /**
     * 获取处方详情（包含处方明细）
     *
     * @param prescriptionId 处方ID
     * @return 处方详情，包含处方明细和关联信息
     */
    Prescription getPrescriptionDetail(Long prescriptionId);

    /**
     * 获取就诊记录相关的处方列表
     *
     * @param medicalRecordId 就诊记录ID
     * @return 处方列表
     */
    List<Prescription> getByMedicalRecordId(Long medicalRecordId);
} 